package com.dkts.oil.router.impl;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.dkts.oil.config.OilConfig;
import com.dkts.oil.router.RouteStrategy;
import com.dkts.oil.router.param.PathInfo;
import com.dkts.oil.router.param.RouterInfo;
import com.dkts.oil.util.HttpUtils;
import com.dkts.oil.web.vo.request.RouteCommonRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 1.1.2.2.2 油库到转运站运输路线规划
 功能名称	油库到转运站运输路线规划	功能标识	CADS_02_001
 功能描述	根据转运站位置规划油库到转运站公路运输路线，在GIS地图上展示规划路线，估计运输用时，并生成油库到转运站公路运输的筹措方案
 输入	转运站位置、油库位置
 处理逻辑	1）	规划从其他油库到转运站的公路运输路线，如果转运站没有公路直接连接，需要在附近公路找到一个最佳点，规划出一条该点到转运站的公路运输路线，在规划公路时需要考虑路线规划约束条件
 2）	规划完成后保存路线规划结果，并在GIS地图上展示规划路线，已有公路与新建公路采用不同线路样式进行标识
 3）	计算运输用时，并生成油料筹措方案


 2.其他油库到ZYZ规划逻辑：
 需规划第一、二、三段
 第一段：其他油库——>最佳点A（已有公路上）【新增路线】 - 这个不需要规划

 第二段：最佳点A（已有公路上）——>最佳点B（已有公路上）【已有路线】
 第三段：最佳点B（已有公路上）——>ZYZ【新增路线】

 */
@Service("YK_TO_ZY")
public class YkToZyStrategy extends RouterCommonHelper implements RouteStrategy<RouteCommonRequest, RouterInfo> {

    @Autowired
    private OilConfig oilConfig;

    @Override
    public RouterInfo planRoute(RouteCommonRequest param) {
        JSONObject result = this.getRouteParam(param.getPoints(), "truck");
        JSONArray data = HttpUtils.postRouteOil(oilConfig.getHighwayUrl() + "/route", JSONObject.toJSONString( result), param.getPoints());
        return routerEndSegments(data, param.getRouteModel(),1,param.getCreateNewRoadDistance(),param.getLocalRouteDistance());
    }
}
